package MAIN;
//笔试强训第5天

//选择题
/*>> 普通右移两位   >>> 无符号右移两位*/
/*方法传参（传引用）要注意：一个是修改引用的指向，一个是修改引用里面的值
* 修改引用里面的值才会真正的修改引用，而修改引用的指向只是形参的指向发生了改变
* 而实参中的指向不会改变任何东西 就是看传引用是否修改了里面的值 */
/*A类中的构造方法A(int a)，在类A中的其他构造方法中调用该构造方法格式是this(x)，代表调用当前类的其他构造方法
* this.A(x)不对，this.是调用当前类的成员和方法*/
/*局部变量在使用的时候一定要进行初始化，没有初始化而去调用局部变量在编译时会报错*/
/*不能做switch的参数的基本数据类型有：float，double，long，boolean，就是说只能是整数，同时枚举和字符串也是可以的*/
/*当try catch语句中有return（代表的是程序的结束），但是如果有finally，finally中有return，
此时return的是finally中的return，所以一般不建议在finally中写return或者是抛异常*/
/*标识符（变量名）不能是一个Java中的关键字*/
/*受查异常：编译时期产生的异常，非受查异常：运行时期产生的异常。
* throws可以抛受查异常，也可以抛非受查异常，而throw是用来抛出一个明确的异常（就是这个异常具体是什么异常）*/

import java.util.Scanner;

//编程题
public class Main5 {

    //1.s1和s2两个字符串，s2插入到s1任意位置之后，判断合并后的s1是否是回文串
    public static void main1(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            String s1 = scan.next();
            String s2 = scan.next();

            int len = s1.length();
            int count = 0;
            //1.for循环插入到一个任意的位置
            for (int i = 0; i <=len ; i++) {//取 = 是因为i是插入的位置，是可以取s1的最后一个位置的
                StringBuffer str = new StringBuffer(s1);
                StringBuffer str2 = str.insert(i,s2);//插入之后的字符串，
                //2.判断是否是回文字符串（1.逆置   2.写一个方法判断是否是回文字符串）
                //StringBuffer str5 = str2.reverse();//此时的写法不对，会把原来的str2也逆置
                StringBuffer tmp = new StringBuffer(str2);
                StringBuffer str5 = tmp.reverse();
                if (str2.toString().equals(str5.toString())) {
                   count++;
                }
            }
            System.out.println(count);
        }
    }

    //求连续子数组的最大和
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int size = scan.nextInt();
        int[] array = new int[size];
        for (int i = 0; i < size; i++) {
            array[i] = scan.nextInt();
        }
        //代码走到这，数组就已经录入进来了
        int sum = array[0];
        int max = array[0];
        for (int i = 1; i < size; i++) {
            sum = getMax(sum+array[i],array[i]);
            if (sum >= max) {
                max = sum;
            }
        }
        System.out.println(sum);
    }

    private static int getMax(int a, int b) {
        return a > b ? a : b;
    }
}
